package com.dsbj.mp.icardservice.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsbj.mp.icardservice.entity.Dayreport;
import com.dsbj.mp.icardservice.entity.ReservationPrimary;

import java.util.List;
import java.util.Map;

public interface DayreportMapper extends BaseMapper<Dayreport>, OcsMapper {
	//通过id删除日考勤
	void deleteDayreport(String id);
	
	//得到当天的考勤数据
	Dayreport findByRpdtdateAndEmployeeno(String rptdate, String employeeno);
	
	//验证是否存在班次号
	Integer check(Map<String, Object> map);
	
	//通过 公司编号 当天日期 工号  得到当天的出勤数据
	List<Dayreport> findByCompanynoAndRptdateAndEmployeeno(String companyno, String date, String employeeno);
	
	//zc 通过 公司编号 当天日期 工号  得到当天的出勤数据  根据入离职
	List<Dayreport> findByCompanynoAndRptdateAndEmployeenoAndlulizhi(String companyno, String date, String employeeno, String eod, String dismissiondate);
	
	//通过日期查询数据
	List<Dayreport> findByYearmonth(String yearmonth, String companyno, String employeeno, int status);
	
	List<Dayreport> findByYearmonthonly(String yearmonth, String companyno);
	
	//通过日期查询数据
	List<String> findOne(Dayreport dayreport);
	
	List<Dayreport> findDayreport(String employeeno);
	
	//zc 找到一年的病假(一種假別記錄)
	List<Dayreport> findByTimeEmployeenoCompanynoRestclassname(String time1, String time2, String employeeno, String companyno, String restlassname);
	
	void update(Dayreport dayreport);
	
	//获取这个人     在这个时间段内     月考情报表    是否被锁定
	List<Dayreport> findByCompanynoAndTimeAndEmployeenoAndStatus(String companyno, String starttime, String endtime, String employeeno, int status);
	
	//获取这个人     在这个时间段内     月考情报表    是否被锁定
	Dayreport findByCompanynoAndTimeAndEmployeeno(String companyno, String dydate, String employeeno);
	
	void unlack(Map<String, Object> map);
	
	Integer checkRs(Map<String, Object> map);
	
	//查询所有未锁定的数据
	List<String> findAllByNoLack(String employeeno);
	
	//查询所有未锁定的数据
	List<String> findAllByNoLackAndTime(Map<String, Object> map);
	
	/**
	 * 通过时间段查询信息
	 *
	 * @param startTime
	 * @param endTime
	 * @param companyno
	 * @param employeeno
	 * @return
	 */
	List<Dayreport> findByStartAndEndTime(String startTime, String endTime, String companyno, String employeeno);
	
	/**
	 * 日考勤查询月列表Count
	 *
	 * @param map
	 * @return
	 */
	int dayReportQueryListCount(Map<String, Object> map);
	
	/**
	 * 日考勤查询月列表
	 *
	 * @param map
	 * @return
	 */
	List<Map<String, Object>> queryPageDayReportQueryList(Map<String, Object> map);
	
	/**
	 * 通过条件查询(开始时间/结束时间)日考勤查询月列表
	 *
	 * @param map
	 * @return
	 */
	List<Dayreport> findDayReportQueryListByStartRptdateAndEndRptdate(Map<String, Object> map);
	
	//zc 根据这个人获取 她一个月的数据  排除全天请假   按照 实际上班时间+OT1计薪 排序 取最小的几天
	List<Dayreport> findByCompanynoAndEmployeenoAndYearmonth(String companyno, String employeeno, String yearmonth);
	
	// <!-- zc 改变状态 锁定全部-->
	void updateALLByCompanynoAndYearmonth(String companyno, String yearmonth, int status, String updateUser);
	
	//正常旷工处理
	void normal(Map<String, Object> map);
	
	void normal2(Map<String, Object> map);
	
	//正常旷工处理
	void unnormal(Map<String, Object> map);
	
	/**
	 * 一卡通审核专用(查询日考勤)
	 */
	List<Dayreport> findDayreportByMap(Map<String, Object> map);
	
	/**
	 * 一卡通审核专用(查询员工考勤时间)
	 *
	 * @param map
	 * @return
	 */
	List<Dayreport> findDayreportByDate(Map<String, Object> map);
	
	//最后考勤日期查询
	int countLastActiveDate(Map<String, Object> map);
	
	List<Dayreport> queryPageLastActiveDate(Map<String, Object> map);
	
	List<Dayreport> findByLastActiveDate(Dayreport dayreport);
}